#

| Chapter 2 UNIX Commands |

## ctags

    ctags [options] files

Create a list of function and macro names that are defined in the specified C, Pascal, FORTRAN, yacc, or lex source `files`. The output list (named tags by default) contains lines of the form: `name file context` where `name` is the function or macro name, `file` is the source file in which `name` is defined, and `context` is a search pattern that shows the line of code containing `name`. After the list of tags is created, you can invoke vi on any file and type:

>     :set tags=tagsfile
>     :tag name

This switches the vi editor to the source file associated with the `name` listed in `tagsfile` (which you specify with -f).

### Options

-a

  Append tag output to existing list of tags.

-B

  `context` uses backward search patterns.

-F

  `context` uses forward search patterns (default).

-f`tagsfile`

  Place output in `tagsfile` (default is tags).

-t

  Include typedefs as tags.

-u

  Update tags file to reflect new locations of functions (e.g., when functions are moved to a different source file). Old tags are deleted; new tags are appended.

-v

  Produce a listing (index) of each function, source file, and page number (1 page = 64 lines). -v is intended to create a file for use with vgrind, which is available in the BSD compatibility package.

-w

  Suppress warning messages.

-x

  Produce a listing of each function, its line number, source file, and context.

### Examples

Store tags in Taglist for all C programs:

>     ctags -f Taglist *.c

Update tags and store in Newlist:

>     ctags -u -f Newlist *.c

Reference: csplit |  | Reference: ctrace